//
// Created by chaseaishang on 23-4-28.
//

#pragma once

#include "test.h"
#include "Render/VertexBuffer.h"
#include "Render/VertexBufferLayout.h"
#include "Render/Texture.h"
#include "Camera.h"
#include <memory>
namespace test {
    class TestLight : public Test {
    public:
        TestLight();

        ~TestLight() override;

        void OnUpdate(float deltaTime) override;

        void OnEvent(Event &e) override;

        void OnRender() override;

        void OnImGuiRender() override;

        bool OnMouseButtonPressed(MouseButtonPressedEvent&e);
        bool OnMouseButtonReleased(MouseButtonReleasedEvent&e);


    private:
        std::unique_ptr<VertexArray> m_VAO;
        std::unique_ptr<VertexArray> m_Light_VAO;
        std::unique_ptr<IndexBuffer> m_IndexBuffer;
        std::unique_ptr<VertexBuffer> m_VertexBuffer;
        std::unique_ptr<Shader> m_Shader;
        std::unique_ptr<Shader> m_Light_Shader;
        std::unique_ptr<Texture> m_Texture;
        std::unique_ptr<Texture> m_Spec_Texture;
        Mouse m_mouse;
        glm::mat4 m_Proj, m_View;
        glm::vec3 m_model_trans={0,0,0};
        glm::vec3 m_lightPos;
        float m_Model_MovementSpeed=0.05;
        PerspectiveCameraController camera{45,800/600.,0.1,100.0};


    };


}






